package negocios;



import controllers.CorController;
import controllers.ICorController;

import controllers.IClassificacoesController;
import controllers.IFamiliasController;
import controllers.IInsumosController;
import controllers.IOperacoesController;
import controllers.IUnidadesController;
import controllers.OperacoesController;
import controllers.IProdutoController;
import controllers.ProdutoController;

import controllers.IMaquinasController;
import controllers.MaquinasController;
import controllers.ClassificacoesController;
import controllers.FamiliasController;
import controllers.InsumosController;
import controllers.UnidadesController;

public class Fachada implements IClassificacoesController, IFamiliasController, IInsumosController, IUnidadesController {
	
	private static Fachada instancia = null;
	
	private ICorController fCor = null;

	private IOperacoesController fOperacoes =null;

	private IProdutoController fProduto = null;

	private IMaquinasController fMaquina = null;
	
    private IClassificacoesController fClassificacoes = null;

    private IFamiliasController fFamilias = null;

    private IInsumosController fInsumos = null;

    private IUnidadesController fUnidades = null;

	
	public static Fachada getInstancia(){
		if(instancia == null)
		{
			instancia = new Fachada();
		}
		return instancia;
	}
	
	public Fachada(){
		fCor = new CorController();
		fOperacoes = new OperacoesController();
		fProduto = new ProdutoController();
		fMaquina = new MaquinasController();
		fClassificacoes = new ClassificacoesController();
		fInsumos = new InsumosController();
		fUnidades = new UnidadesController();
		fFamilias = new FamiliasController();

	}
	

	
	//------------Cor------------------//
	public void IncluiCor(Cor color){
		fCor.incluirCor(color);
	}
	
	public void editarCor(Cor cor){
		fCor.editarCor(cor);
	}
	public Cor[] listarCor(Cor color, String op){
		return fCor.listarCor(color,op);
	}
	public Cor ConsultarCor(Cor color, boolean flag){
		return fCor.consultarCor(color, flag);
	}
	public void excluirCor(String cod){
		fCor.excluirCor(cod);
	}	
	//------------Produto---------------//
	public void IncluiProduto(Produto produto){
		fProduto.incluirProduto(produto);
	}
	public void editarProduto(Produto produto){
		fProduto.editarProduto(produto);
	}
	public Produto[] listarProduto(Produto produto, String op){
		return fProduto.listarProduto(produto,op);
	}
	public Produto ConsultarProduto(Produto produto, boolean flag){//, boolean flag
		return fProduto.consultarProduto(produto, flag);//, flag
	}

	
	//-------------Operacoes------------//
	public void IncluirOperacao(Operacoes operacao){
		fOperacoes.incluirOperacao(operacao);
	}
	public void editarOperacao(Operacoes operacao){
		fOperacoes.editarOperacao(operacao);
	}
	public Operacoes[] listarOperacao(Operacoes operacao, String op){
		return fOperacoes.listarOperacao(operacao,op);
	}
	public Operacoes ConsultarOperacao(Operacoes operacao, boolean flag){
		return fOperacoes.consultarOperacao(operacao, flag);
	}
	public void excluirOperacao(int cod){
		fOperacoes.excluirOperacao(cod);
	}
	
	public void excluirProduto(String cod){
		fProduto.excluirProduto(cod);
	}		
	
	//----------Maquinas----------//

	public void IncluiMaquinas(Maquinas maquina){
		fMaquina.incluirMaquinas(maquina);
	}
	public void editarMaquinas(Maquinas maquinas){
		fMaquina.editarMaquinas(maquinas);
	}
	public Maquinas[] listarMaquinas(Maquinas maquina, String op){
		return fMaquina.listarMaquinas(maquina,op);
	}
	public Maquinas ConsultarMaquinas(Maquinas maquina, boolean flag){
		return fMaquina.consultarMaquinas(maquina, flag);
	}
	
	public void excluirMaquinas(String grupo){
		fMaquina.excluirMaquinas(grupo);
	}
	
    //------------Classificacoes-------------//

	@Override public Object[] listarClassificacoes(){

        return fClassificacoes.listarClassificacoes();

    }

	@Override public Classificacao consultarClassificacao(Classificacao classificacao){

        return fClassificacoes.consultarClassificacao(classificacao);

    }

	@Override public void inserirClassificacao(Classificacao classificacao){

        fClassificacoes.inserirClassificacao(classificacao);
        
    }

	@Override public void editarClassificacao(Classificacao classificacao){

        fClassificacoes.editarClassificacao(classificacao);

    }

	@Override public void excluirClassificacao(Classificacao classificacao){

        fClassificacoes.excluirClassificacao(classificacao);

    }

    //--------------------Familias------------------------//

    @Override public Object[] listarFamilias() {
        return fFamilias.listarFamilias();
    }

    @Override public Familia consultarFamilia(Familia familia) {
        return fFamilias.consultarFamilia(familia);
    }

    @Override public void inserirFamilia(Familia familia) {
        fFamilias.inserirFamilia(familia);
    }

    @Override public void editarFamilia(Familia familia) {
        fFamilias.editarFamilia(familia);
    }

    @Override public void excluirFamilia(Familia familia) {
        fFamilias.excluirFamilia(familia);
    }

    //-----------------Insumos-------------------//

    @Override public Object[] listarInsumos() {
        return fInsumos.listarInsumos();
    }

    @Override public Insumo consultarInsumo(Insumo insumo) {
        return fInsumos.consultarInsumo(insumo);
    }

    @Override public void inserirInsumo(Insumo insumo) {
        fInsumos.inserirInsumo(insumo);
    }

    @Override public void editarInsumo(Insumo insumo) {
        fInsumos.editarInsumo(insumo);
    }

    @Override public void excluirInsumo(Insumo insumo) {
        fInsumos.excluirInsumo(insumo);
    }

    //------------------Unidades-------------------//

    @Override public Object[] listarUnidades() {
        return fUnidades.listarUnidades();
    }

    @Override public Unidade consultarUnidade(Unidade unidade) {
        return fUnidades.consultarUnidade(unidade);
    }

    @Override public void inserirUnidade(Unidade unidade) {
        fUnidades.inserirUnidade(unidade);
    }

    @Override public void editarUnidade(Unidade unidade) {
        fUnidades.editarUnidade(unidade);
    }

    @Override public void excluirUnidade(Unidade unidade) {
        fUnidades.excluirUnidade(unidade);
    }
	
}